package de.dhbw.horb.inf2013.vierFarbenProblem.viewModel.interfaces;

import java.awt.Color;

import de.dhbw.horb.inf2013.vierFarbenProblem.model.datatypes.Graph;
import de.dhbw.horb.inf2013.vierFarbenProblem.model.datatypes.NoColorSetException;
import de.dhbw.horb.inf2013.vierFarbenProblem.model.datatypes.VertexNotSetException;
import de.dhbw.horb.inf2013.vierFarbenProblem.viewModel.datatype.Area;
import de.dhbw.horb.inf2013.vierFarbenProblem.viewModel.lineToFigure.Line;

/**
 * The Interface ViewModelInterface.
 */
public interface ViewModelInterface {

	/**
	 * Generate squares.
	 * 
	 * @param numberOfElementsPerRow
	 *            the number of elements per row
	 * @param numberOfElementsPerCol
	 *            the number of elements per col
	 * @param squareWidth
	 *            the square width
	 * @param squareHeight
	 *            the square height
	 */
	public void generateSquares(int numberOfElementsPerRow,
			int numberOfElementsPerCol, int squareWidth, int squareHeight);

	/**
	 * Generate hexagons.
	 * 
	 * @param numberOfElementsPerRow
	 *            the number of elements per row
	 * @param numberOfElementsPerCol
	 *            the number of elements per col
	 * @param hexagonWidth
	 *            the hexagon width
	 * @param HexagonHeight
	 *            the hexagon height
	 */
	public void generateHexagons(int numberOfElementsPerRow,
			int numberOfElementsPerCol, int hexagonWidth, int HexagonHeight);

	/**
	 * Adds a line.
	 * 
	 * @param line
	 *            the line
	 */
	public void addLine(Line line);

	/**
	 * Adds the area.
	 * 
	 * @param area
	 *            the area
	 */
	public void addArea(Area area);

	/**
	 * Gets the area.
	 * 
	 * @param id
	 *            the id
	 * @return the area
	 */
	public Area getArea(int id);

	/**
	 * Gets the area color.
	 * 
	 * @param id
	 *            the id
	 * @return the area color
	 */
	public Color getAreaColor(int id);

	/**
	 * Count areas.
	 * 
	 * @return the int
	 */
	public int countAreas();

	/**
	 * Reset all.
	 */
	public void resetAll();

	/**
	 * Start.
	 */
	public void start();

	/**
	 * Adds the view model listener.
	 * 
	 * @param viewModelListener
	 *            the view model listener
	 */
	public void addViewModelListener(
			ViewModelListenerInterface viewModelListener);

}
